package org.example.utils;

import java.util.Random;

/**
 * 类描述：数组工具类
 * <br>
 *
 * @author ZS
 * @version 1.0
 * @date 2020/12/28
 **/
public class ArrayUtils {
    // 随机数函数
    private static final Random random = new Random();

    /**
     * 获取一个小型随机数组
     *
     * @param len 数组长度
     * @return 测试数组
     */
    public static int[] getTestArray(int len) {
        return getTestArray(len, 100);
    }

    /**
     * 获取一个测试数组
     *
     * @param len   数组长度
     * @param bound 随机数的大小
     * @return
     */
    public static int[] getTestArray(int len, int bound) {
        int[] res = new int[len];
        for (int i = 0; i < len; i++) {
            res[i] = random.nextInt(bound);
        }
        return res;
    }

    /**
     * 交换数组中索引x和索引y上元素的值
     *
     * @param arr 数组
     * @param x   索引1
     * @param y   索引2
     */
    public static void swap(int[] arr, int x, int y) {
        arr[x] ^= arr[y];
        arr[y] ^= arr[x];
        arr[x] ^= arr[y];
    }

    // 数组复制
    public static int[] copy(int[] arr) {
        int[] copy = new int[arr.length];
        // 复制
        System.arraycopy(arr, 0, copy, 0, arr.length);
        return copy;
    }
}
